package days2.introduct;

/**
 * 方法的基本结构。
 * [访问权限修饰符] 返回值类型 方法名(形参列表){
 * // 方法体。
 * }
 * <p>
 * 方法头/方法声明： [访问权限修饰符] 返回值类型 方法名(形参列表)
 * 方法的签名: 方法名 (形式参数列表) .可以用来唯一确定一个方法。
 * 方法的签名不能重。
 * <p>
 * 1.修饰符列表。 可以为空不写。 现在我们先写成 public static
 * 2.返回值类型。
 *
 * @Author fengzihao
 * @Date 2024-04-16 21:28
 */
public class Practice {
    // 返回值类型，可以有返回值， 也可以没有返回值。
    // 1.如果有返回值的时候，可以是基本数据类型，也可以是引用数据类型
    // 一旦声明的时候，告诉别人方法有返回值。 必须显式的指出返回值。   return + 返回值。
    // return后面的跟着的值，一定要和返回值类型保持一致。(或者兼容)
    // 方法执行到return语句时，表示方法执行完毕。如果return下面，有代码，无法执行。
    public static int test1() {
        byte b = 1;
        // 在返回返回值的时候部分可以进行自动的类型转换（由小到大）
        return b;
    }

    public static void test2() {
        // 方法完全可以没有结果，也就是没有返回值，
        // 但是方法必须要有返回值类型，用关键字void标记。使用void标记的方法，没有返回值，自然也无需指出返回值
    }

    // 如何解决问题。
    // 标准答案。 要学着去解决。


    // 小驼峰。
    // 驼峰： 多个单词之间，首字母大写。
    // 小驼峰： 首单词的首字母是小写的。 方法名、变量名。
    // 大驼峰：  首单词的首字母是大写的。 类名、接口名


}

/**
 * - 形参可以是基本数据类型变量，也可以是引用数据类型变量
 * - 形参的个数不受限，多个形参之间用逗号隔开
 * - 形参的作用域仅在方法内部，它们都是局部变量
 * - 形参中起关键决定性作用的是形参的数据类型，形参名只是一个标识符，不会影响方法调用
 * - 调用方法时传入的具体数据参数称之为实际参数，简称实参
 * - 方法调用时，实参和形参的数据类型要一一对应，并且保持一致（或者兼容）-->可由小转向大的，例子如下
 */
class Demo3 {
    // 形参列表，
    // 1.可以没有形参.没有任何的参数也可以。
    public static void test1() {

    }

    // 写局部变量是一样的。
    public static void test2(int i, String s1) {

        System.out.println("i = " + i);

        System.out.println("s1 = " + s1);
    }

    public static void main(String[] args) {
        //
        int num1 = 10;
        String s = "hello test2";
        // 如上所说，可以由小变大的用形参
        byte a = 1;
        test2(a, s);
        test2(num1, s);
    }


}
